The storage of data in a memory within a data processing system, whilst necessary for the data processing to be carried out, can have characteristics which render it vulnerable to exposure or hacking, which is clearly undesirable for the intended user of the data processing system. For example, where a memory is provided in a system-on-chip, the content of this memory (in the case of this being a RAM) are typically loaded at the system initialisation stage. This can result in much, if not all, of the data loaded into that memory being physically located at the same places inside the memory each time this system is initialised, potentially making it easier for a hacker to examine, read, and possibly modify the content of the memory. Once a hacker is able to interfere with the memory content in this manner, this can lead to security vulnerabilities with regard to, for example, encryption keys, secure data and so on. As just one specific example, the bit content of a particular memory location may be modified (set/unset) in order to then observe the effect that this has on the data outputs of the memory.
Various techniques are may be used to seek to address such security vulnerabilities, such as duplicating the content of one memory instance into an essentially identical memory instance and then comparing the output data from each to ensure that no bits have been corrupted or hacked. Another approach is to define a portion of each data value stored in the memory as a “key”, without the knowledge of which portion this is being made publicly available, such that this key can be compared to a predetermined reference key and it can therefore be identified when bits have been modified within this portion of a data value. Nevertheless the opportunity remains for improvements to be made in the manner in which such a memory device is protected in such situations.